{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "134e7f9d",
   "metadata": {},
   "source": [
    "# API Demo 7: Pruning\n",
    "\n",
    "### We usually use pruning to make neural networks sparser hence more efficient and more interpretable. KANs provide two ways of pruning: automatic pruning, and manual pruning."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7fd6a742",
   "metadata": {},
   "source": [
    "## Automatic pruning\n",
    "\n",
    "### For each node, we consider it active if both of its max incoming l1 and outgoing l1 are above some threshold (see paper for details). Only active neurons will be kept, while inactive neurons are pruned away. Note that there is no automatic edge pruning, just to be safe (there are cases where important edges have small l1 norm). However, one can manually prune away nodes and edges."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "2075ef56",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "train loss: 1.54e-01 | test loss: 1.30e-01 | reg: 2.02e+01 : 100%|██| 20/20 [00:11<00:00,  1.68it/s]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from kan import *\n",
    "# create a KAN: 2D inputs, 1D output, and 5 hidden neurons. cubic spline (k=3), 5 grid intervals (grid=5).\n",
    "model = KAN(width=[2,5,1], grid=5, k=3, seed=0)\n",
    "\n",
    "# create dataset f(x,y) = exp(sin(pi*x)+y^2)\n",
    "f = lambda x: torch.exp(torch.sin(torch.pi*x[:,[0]]) + x[:,[1]]**2)\n",
    "dataset = create_dataset(f, n_var=2)\n",
    "dataset['train_input'].shape, dataset['train_label'].shape\n",
    "\n",
    "# train the model\n",
    "model.train(dataset, opt=\"LBFGS\", steps=20, lamb=0.01, lamb_entropy=10.);\n",
    "model = model.prune()\n",
    "model(dataset['train_input'])\n",
    "model.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a4c70847",
   "metadata": {},
   "source": [
    "### Let's try to use different threshold, by default, threshold = 1e-2"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d5ee3ecf",
   "metadata": {},
   "source": [
    "threshold = 1e-4 leaves more hidden nodes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "76adf576",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "train loss: 1.54e-01 | test loss: 1.30e-01 | reg: 2.02e+01 : 100%|██| 20/20 [00:11<00:00,  1.70it/s]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 13 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from kan import *\n",
    "# create a KAN: 2D inputs, 1D output, and 5 hidden neurons. cubic spline (k=3), 5 grid intervals (grid=5).\n",
    "model = KAN(width=[2,5,1], grid=5, k=3, seed=0)\n",
    "\n",
    "# create dataset f(x,y) = exp(sin(pi*x)+y^2)\n",
    "f = lambda x: torch.exp(torch.sin(torch.pi*x[:,[0]]) + x[:,[1]]**2)\n",
    "dataset = create_dataset(f, n_var=2)\n",
    "dataset['train_input'].shape, dataset['train_label'].shape\n",
    "\n",
    "# train the model\n",
    "model.train(dataset, opt=\"LBFGS\", steps=20, lamb=0.01, lamb_entropy=10.);\n",
    "model = model.prune(threshold=1e-4)\n",
    "model(dataset['train_input'])\n",
    "model.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "13cfb2b4",
   "metadata": {},
   "source": [
    "### We can manually prune away nodes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "81d103d2",
   "metadata": {},
   "outputs": [],
   "source": [
    "model.remove_node(1,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "559c06e1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 13 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fa3e5da5",
   "metadata": {},
   "source": [
    "### We can also manually remove edges"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f4963f0e",
   "metadata": {},
   "outputs": [],
   "source": [
    "model.remove_edge(0,0,1)\n",
    "model.remove_edge(0,0,3)\n",
    "model.remove_edge(0,1,1)\n",
    "model.remove_edge(0,1,3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "6bda6008",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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448/7uRkRM2nKAqio6Px8ccfq/q677//Pvz8/Jo1INMbsFwIwO+nxF5//XX07t270ePCFUXBm2++ia+++gq//PKLkxMSNd+DDz6I0tJSOBwOVV5PCIF9+/ahd+/evN7SAJaLBjVnB6qoqMD58+fxf//3f03abvjw4Zg+fTratGnT5O9J5Cq9e/cGANVO4dbU1KCyspLXW66C5aIxZrMZM2bMaHLBrFmzBoqioH///k3aTlEUvPbaaw0+E0PkDvz9/eHn51d/N2RL1T1AHBsbq8rraRHLRWNqamqwfft2ZGZmNnobIQTS09PRr1+/Zn0SJU8LkLtTFAX9+vXDvn37VLm7MSsrC6GhoS365Fat438ZjencuTMmTZqEf/3rX41+wNFisaCoqKjBcS9EWjB+/HjY7fYWf8aLEAL5+fkYPnw431hdBctFg1555RVUV1fDaDQ26usXL14MHx8f3Hrrrc4NRiRRx44doSgKdu7c2aLXKSoqgsPhQEJCgkrJtInlokHBwcEYO3YsXnvttWteexFCYOnSpRgxYgQP8UnTdDodunTpgvfee69Fp8bWrVsHPz8/tG7dWsV02sP/m2jUyy+/jIqKCnz44YdX/bqTJ0/CarXylBh5hWnTpqGkpASVlZXN2t7hcGDPnj08JdYILBeNCgsLQ+/evfHUU081+C6tbgJy69atccMNN7g4IZHr3XzzzfDx8cF7773XrO2/++471NbWYtKkSSon0x6Wi0YpioKFCxfi/PnzOHz48BW/prKyEp9//jmef/55vgsjr6DT6TBkyBDk5uaitra2Sds6HA4sWrQIsbGxCA4OdlJC7WC5aFhsbCyuv/56zJo164pHL6+88gp8fHwwZcoUCemI5Jg2bRpqa2uxdevWRl97EULg448/RllZGf7+97/zzVgjsFw0rO7o5eDBgzh58uRl/2axWGA0GvH4449fcwIykZa0atUKI0eOxDvvvIPS0tJrfr0QAkePHsWyZcsQHx+PiIgI54fUAJaLxt1zzz2IjIxEYmJi/Z1jQgikpaUhICAATz/9tOSERK6lKAqmTZuG6667Di+88AIsFssVv04IAavViry8PLz44ovo1q0bZs6cyaOWRlIEP4xDM86dO4c2bdr85VPxDh06hMGDB2PevHl47LHHsHz5crzyyitYu3Ythg0bpsr3vnjxInQ6HUJCQlR5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\n",
      "text/plain": [
       "<Figure size 500x400 with 13 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9397d2fe",
   "metadata": {},
   "source": [
    "### Use prune() if you don't want to see these inactive nodes in the hiddenl layer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "2343614d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model = model.prune(mode='manual', active_neurons_id=[[0,1],[2],[0]]);\n",
    "model(dataset['train_input'])\n",
    "model.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b58417be",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
